class BancoController < ApplicationController
  def index
    home
    render :action => 'home'
  end
  
  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
  :redirect_to => { :action => :list }
  def show
    @requisicao = Requisicao.find(params[:id])
    @events = filtra_eventos(@requisicao.next_events_for_current_state)
  end

  def home
    @requisicao_pages, @requisicoes = paginate(:requisicoes, :per_page => 10, 
                                  :conditions => "estado = 'aguardandoAtualizacaoBdProd' or 
                                  estado = 'atualizacaoBdIniciadaProd' or
                                  estado = 'atualizacaoBdSuspensaProd' or 
                                  estado = 'aguardandoAtualizacaoBdCert' or 
                                  estado = 'atualizacaoBdIniciadaCert' or
                                  estado = 'atualizacaoBdSuspensaCert'                                                              
                                  ")
  end
  
  def ultimas_req
    @requisicao_pages, @requisicoes = paginate(:requisicoes, :per_page => 10, :conditions => "estado = 'emCert' or  estado = 'escaladaCert'")     
  end

  #O administrador de dados inicia a atualizacção do banco
  def iniciarAtualizacaoBdCert
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.iniciarAtualizacaoBdCert!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end

  #O administrador de dados cancela a atualização do banco. 
  def cancelarAtualizacaoBdCert
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.cancelarAtualizacaoBdCert!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end

  def suspenderAtualizacaoBdCert
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.suspenderAtualizacaoBdCert!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    redirect_to :action => 'home'
  end
  
  def concluirAtualizacaoBdCert
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.concluirAtualizacaoBdCert!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
  
  def iniciarAtualizacaoBdProd
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.iniciarAtualizacaoBdProd!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
  
  def suspenderAtualizacaoBdProd
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.suspenderAtualizacaoBdProd!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
  
  def cancelarAtualizacaoBdProd
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.cancelarAtualizacaoBdProd!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
  
  #Ao concluir atualização de banco em produção o requisição toma seu rumo
  #seguindo alguns fatores.
  #se ouver umas pasta cadastrada ou  itens de proIV é necessario a atualização do servidor
  #caso contrario essa atualização é dispensada
  def concluirAtulizacaoBdProd
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.concluirAtulizacaoBdProd!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    if @requisicao.pasta? or !@requisicao.proiv_items.collect.empty?
      @requisicao.atualizaServidorProd!
      historico2 = Historico.new
      historico2.observacao = 'Transição Automatica'
      historico2.usuario_id = Goldberg.user.id
      historico2.estado = @requisicao.estado
      @requisicao.historicos << historico2          
    else
      @requisicao.naoAtualizaServidorProd!
      historico2 = Historico.new
      historico2.observacao = 'Transição Automatica'
      historico2.usuario_id = Goldberg.user.id
      historico2.estado = @requisicao.estado
      @requisicao.historicos << historico2    
    end
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
end